This invention relates to a distributed system composed of computers connected to each other, and more particularly to the determination of the execution position of a requested process.
This application is based on Japanese Patent Application No. 10-243614, filed Aug. 28, 1998, the entire content of which is incorporated herein by reference.
With the recent advances in computer and communication technology, rather than using computers in a stand-alone manner, more and more users have been constructing various types of network systems, such as LAN, WAN, or the Internet, and sharing resources in the network. A network system where a computer (server host) carries out a specific process at the request of another computer (client host) is known as a client-server system or a distributed system (hereinafter, referred to as a distributed system). With such a distributed system, the process requested by the client host can be executed by a server host other than the client host, depending on the state of the network system or the contents of the process at that time.
Conventional distributed systems are broadly classified into three types as follows.
A first type of distributed system is a vertical-type distributed system, represented by a mainframe. In the vertical-type distributed system, a client host requests a server host to carry out a process, the server host executes the process, and the client host receives the result of the process from the server.
The vertical-type distributed system has the following problems.
(1) When many client hosts are connected to a server host, the overload on the server host decreases the throughput of the entire process.
(2) Because communication is effected through the network each time a process is requested, the network traffic increases.
A second type of distributed system is a horizontal-type distributed system. In the horizontal-type distributed system, the necessary data is requested from the database management system (DMBS) existing in the server host and a client host processes the information obtained from the DMBS. By doing this, the problems of the vertical-type distributed system in items (1) and (2) can be overcome to some degree.
In this system, however, the following problems arise:
(3) The client host requires some degree of processing capability and a certain numbers of resources.
(4) The system has a low flexibility in dealing with the modification of the database management system, because the client host is closely related to the database management system.
(5) Application program management has to be carried out for each client host.
A third type of distributed system is a distributed network system composed of network computers (NCs) without a secondary memory (such as a HDD) or mobile-environment-oriented mobile network computers (MNCs). In the distributed network system, ordinary personal computers (PCs) and workstations (WSs) can serve as terminals. With the distributed network system, when a client requests a process from a server, the server component for executing the process is sent to the client host. The process is executed on the client host. Today""s Java applets correspond to the component.
This system overcomes the problem of the horizontal-type distributed system in item (5). The problem in item (3), however, becomes more serious. If the client host were a powerful personal computer or workstation, the problem in item (3) would be overcome. The reason is that network computers and mobile network computers have lower processing capabilities. This leads to the following problem:
(6) When a client has a low load, processing is done on the server host rather than on the client host. This improves the throughput of the entire processing.
Besides these problems, the systems of the first to third types have the following problems in common:
(7) Since the software structure (the execution position of a process component) has been determined statically, the systems lack flexibility in a dynamically changing network environment.
(8) Since the systems are difficult to design (in deciding what process which host should execute) and lack flexibility, a problem can arise in making a change later or adding a new specification.
In a load distributed system or a mobile-environment-oriented agent system in a distributed environment, there is a conventional example of dynamically moving and arranging process components on a network to improve the flexibility of the system. The system of this type, however, has the following problem:
(9) In execution on the client host, the components have to communicate with each other because client components differ from server components in type. The overhead in the communication becomes a problem.
In such conventional distributed systems, the execution position of a component that provides a specific process has been determined statically by the system developer. Therefore, a certain component is always executed on the client host and another component is always executed on the server host.
In the prior art, as the system has advanced from the first type, second type, and to third type, the number of problems seems to have decreased. This is not necessarily true. Specifically, in the network system, the computer environment changes dynamically. The dynamic change of the computer environment combines with the fixation of the component execution position to make it difficult to improve the processing efficiency.
Therefore, The distributed system of any one of the first to third type does not necessarily perform the process in an ideal state because of the dynamically changing environment and cannot achieve the performance it essentially has. For example, a large number of clients are connected to a server, which makes the load of the server heavy. Even if the vertical-type system is changed to a horizontal-type system or to a distributed network system, distribution goes too far, which makes the load on the server so low that the execution of a certain process on the server host may improve the throughput of the entire process.
To improve the throughput of the process while coping with such dynamic changes in the computer environment, it is preferable to form a system capable of dynamically changing the execution position of a component for carrying out the process.
In developing various types of network systems taking into account the scalablility of the system, it is desirable that the execution position should be changed dynamically, rather than being determined statically.
To determine the execution position of the process dynamically, it is necessary to implement programs including processes (in executable form) in all the relevant computers beforehand. This makes it possible to select the execution position of the process from the computers and cause the selected computer to execute the process. Such a distributed system can be constructed, taking into account fault tolerance or load distribution.
It is hard work to implement programs in all the computers and manage them. Thus, this approach is not feasible.
There is what is called a mobile agent for changing the execution position of a process after the execution of the process. This is intended for the specified computers on a distributed system. The mobile agent carries out processes while going around the specified computers. Specifically, after having carried out a process on a computer, the mobile agent moves to another computer and carries out a similar process. From this time on, it repeats a similar process on each of the remaining computers specified. Such a distributed system is used mainly for the purpose of acquiring information or monitoring the system.
In the mobile agent, however, the programs related to the process are put together into a unit and all the unit is moved (delivered) to the relevant computer, which executes the unit. Therefore, the mobile agent itself cannot have such a structure as makes use of resources in a specific computer.
Furthermore, there has been a system in which a server host that offers processing programs delivers a processing program to the client host that has requested a process, as with Java applets explained in the third type of system, and the client host executes the program. This enables the processing programs to be implemented in only one place, which facilitates not only the maintenance and management of the processing programs but also implementing work.
In this system, too, the execution position of the process has been determined statically and the configuration of the distributed system (which computer should execute the process in the distributed system) cannot be changed flexibly. Therefore, the system cannot be used for load distribution.
In the above conventional examples, the place once executed basically cannot be changed in the middle of the process. In the case of a mobile agent, it cuts off the connection with the client that has requested the process until a series of movements and processes has been completed. Namely, because the mobile agent is not connected constantly, it is difficult for the client host to give a certain instruction during the process.
It is, accordingly, an object of the present invention to overcome the above-described problems by providing a distributed system capable of changing the system configuration flexibly by dynamically switching the execution position of a process requested by a client between the client host and the server host.
To solve the problems and achieve the object, the present invention is as follows.
(1) A distributed system of the present invention comprises a client and a server, wherein the client includes means for requesting a process from the server, and the server includes means for receiving the request for a process from the client and decides whether the process should be executed on the client or on the server.
With this configuration, the execution position of the process can be switched, which increases the flexibility of the system.
(2) A distributed system of the present invention comprises a client and a server, wherein the client includes an application basic part that issues a request for a process, and the server includes management means that manages a server component for executing the process requested by the application basic part, execution position decision means that receives the request from the application basic part and decides whether a server component for executing the process should be executed on the client or the server, and server component handover means that obtains the server component for executing the process requested by the application basic part from the management means and hands over the obtained server component to the client or the server according to the result of the decision at the execution position decision means.
With this configuration, too, the execution position of the process can be changed dynamically, which enables the system configuration to be varied flexibly.
(3) The distributed system in item (2) further comprises network monitor means that acquires at least one of load information about the server and the client, information on the processing capability of the server and the client, the data transfer speed of a network connecting the server and the client, size information about the server component, and information on the amount of calculation at the server component, and offers the acquired information to the execution position decision means, wherein the execution position decision means determines the execution position of the server component on the basis of the information offered by the network monitor means.
With this configuration, at the client""s request for a process, the execution position of the server component can be switched so as to obtain the result of processing faster, which improves the throughput.
(4) The distributed system in item (2) is characterized in that the server includes access control monitoring means that judges whether or not to accept the request for a process issued by the application basic part, on the basis of user information about the client or identification information in the application basic part, and the execution position decision means decides whether or not the server component should be executed, on the basis of the result of judgment at the access control monitoring means.
With this configuration, access to the server component can be controlled on the basis of user information about the client and client host information.
(5) The distributed system in item (2) is characterized in that the server component includes a server component body in which the requested process has been implemented, a client-side adapter that communicates with the server, a server-side adapter that communicates with the client, and a common interface that defines an interface between the server component body and the client-side adapter.
Since this configuration requires only one server component body, the server component developer has only to implement the same program once. Furthermore, because the common interface is implemented in both of the server component body and client-side adapter, the client can access both of them in a similar manner. When the server component body is executed on the client-host side, no adapter for communication between the client host application basic part and the server component body is used, which leads to no overhead in requesting a process.
(6) The distributed system in item (5) is characterized in that the server component further includes a client resource accessing section that accesses a client resource, a server resource accessing section that accesses a server resource, and a server resource accessing client-side adapter and a server resource accessing server-side adapter that are for communicating with the server resource accessing section when the server component body is executed on the client host.
With this configuration, the process body is movable. In addition, such a movable process component as accesses a resource on the client host or a resource on the server host can be developed.
(7) The distributed system in item (5) is characterized in that the server component further includes a client resource accessing section that accesses a client resource, a server resource accessing section that accesses a server resource, and a server resource accessing client-side adapter and a server resource accessing server-side adapter that are for communicating with the server resource accessing section when the server component body is executed on the client host, and a client resource accessing client-side adapter and a client resource accessing server-side adapter that are for communicating with the client resource accessing section when the server component body is executed on the server host.
With this configuration, the process body is movable. In addition, such a movable process component as accesses a resource on the client host or a resource on the server host can be developed. Moreover, processes can be concentrated on the server component body, which facilitates the development of server components.
(8) A server component creating device of the present invention creates a server component used in a distributed system including a client having an application basic part that issues a request for a process, and a server including management means that manages a server component for executing the process requested by the application basic part, execution position decision means that receives the request from the application basic part and decides whether a server component for executing the process should be executed on the client or the server, and server component handover means that obtains the server component for executing the process requested by the application basic part and hands over the obtained server component to the client or the server according to the result of the decision at the execution position decision means. The server component creating device comprises template offering means that offers templates for the server component, information offering means that offers information on the server component, and program creating means that creates a server component by combining the templates or applying the information to the templates.
(9) A distributed system of the present invention comprises a main server which determines an arbitrary computer before execution as the execution position of a process requested by a client, obtains a server component for executing the process from management means for managing a server component for executing the process, hands over the acquire server component to the determined computer, receives the result of processing from the determined computer, and hands over the result to the main server.
(10) The distributed system in item (9) is characterized in that the main server includes means that determines the execution position temporarily and changes the execution position of the server component being executed on the determined computer to another computer.
(11) A computer-readable recording medium of the present invention records a program for controlling a distributed system composed of a client and a server. The program comprises a management program code that manages a server component for executing the process requested by the application basic part of the client, an execution position decision program code that receives the request from the application basic part and decides whether the server component should be executed on the client or the server, and a server component handover program code that obtains the server component from the management means and hands over the obtained server component to the client or the server according to the result of the decision at the execution position decision means.
(12) A computer-readable recording medium of the present invention records a program for controlling a distributed system composed of a client and a server and capable of dynamically changing the decision whether the process requested by the application basic part on the client should be executed on the client or the server. The program comprises a server component program code that enables the process requested by the application basic part on the client to be executed on both of the client and the server, and a communicating program code that is for securing communication with the application basic part when the server component means is executed on the server.
Additional objects and advantages of the invention will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The objects and advantages of the invention may be realized and obtained by means of the instrumentalities and combinations particularly pointed out hereinafter.